# Makefile for task6 project

# 编译器及参数设置
CC = gcc
CFLAGS = -Wall -Iinclude

# 目录定义
SRCDIR = src
BINDIR = bin
LIBDIR = lib

# 源文件及生成的目标文件
SRC = $(wildcard $(SRCDIR)/*.c)
OBJ = $(SRC:$(SRCDIR)/%.c=$(LIBDIR)/%.o)

# 可执行文件名
TARGET = $(BINDIR)/main

# 默认目标
all: $(TARGET)
	@echo "编译成功，生成可执行文件：$(TARGET)"

# 链接目标文件，生成可执行文件
$(TARGET): $(OBJ)
	@mkdir -p $(BINDIR)
	$(CC) $(CFLAGS) -o $@ $^

# 编译每个 C 文件为目标文件
$(LIBDIR)/%.o: $(SRCDIR)/%.c
	@mkdir -p $(LIBDIR)
	$(CC) $(CFLAGS) -c $< -o $@

# 清理目标文件与可执行文件
clean:
	rm -rf $(LIBDIR) $(BINDIR)
	@echo "已清理编译生成文件"

# 运行可执行程序
run: $(TARGET)
	./$(TARGET) 1   # 这里示例调用命令行参数为 1，如需测试其它功能，可修改参数

.PHONY: all clean run

